#ifndef APICOM_USERSET_H
#define APICOM_USERSET_H

#include "httpagent_com.h"

typedef struct T_SdkInit 
{
    T_CerSet cerset;                                    // 必填字段：车机证书
    string controllerCode;                              // 必填字段：用户控制器名
    E_CloudCaplatform caplatNum = CLOUD_CHINA_PROD;     // 必填字段：云平台环境，默认国内生产

    bool sdkAutoEncryptFlag = true;                     // 选填字段：SDK内部自动判定加密，默认开启。用户设置可为false，自主管控加密。
    string workDir;                                     // 必填字段：SDK临时使用目录，用于加密过程中存储临时文件，需预留足够空间

    void (*on_log)(const string&) = nullptr;            // 选填字段：日志回调打印函数
    bool curlLogFlag = false;                           // 选填字段：Curl三方库日志开启标志
} T_SdkInit;



class ApicomUserSet
{
public:

ApicomUserSet();
~ApicomUserSet();




// SDK初始化接口
// 备注：必须调用
static void sdkInit(T_SdkInit &sdkInit);



//=============== 此部分接口为初始化结构体中的单个设置，运行过程中用户可根据需求调用===========
// 用户设置SDK内部是否自动判定加密
static void userSetSdkAutoEncryptFlag(bool flag);
// 用户设置控制器名
static void userSetcontrollerCode(string &controllerCode);
// 用户设置API临时使用目录
static void userSetApiWorkDir(string &workDir);
// 用户设置证书路径
static void userSetCaCer(T_CerSet &cerset);
// 用户设置云平台环境
static void userSetCloudCaplatform(E_CloudCaplatform caplatNum);
// 用户设置HTTP日志回调函数
static void userSetHttpLogCallback( void (*on_log)(const string&) );
// 用户设置是否开启Curl三方库日志，true开启，false关闭
// 日志打印会通过注册的HTTP日志回调函数打印
static void userSetCurlLog(bool flag);
//=============== 此部分接口为初始化结构体中的单个设置，运行过程中用户可根据需求调用===========


};





#endif // APICOM_USERSET_H




